CAP定理 CAP theorem
Atomic, or linearizable, consistency is the condition expected by most web services today.
可用性
For a distributed system to be continuously available, every request received by a non-failing node in the system must result in a response.
分断耐性
When a network is partitioned, all messages sent from nodes in one component of the partition to nodes in another component are lost.
ノードが生きていお互いに完全に切り離されている状態
ノードが死んでるとか遅延とかは定義されていない
大体のシステムは線形化可能性を持っていないし可用性もない
分散システムにおいては、不可能になってしまう興味深いことが数多く存在し、CAPはさらに精密な結果によって 置き換えられているので、今日CAPに対して寄せられるのはほぼ歴史的な関心だけになっています。
ネットワーク分断が起きたとき可用性と一貫性どちらをとるか?と捉えた方がいい
分断が起きていないのであれば可用性と一貫性は両立可能
Cloud SpannerがCAP定理に違反して見えてるのはネットワーク分断が起きないといっていいほど高水準に保つことにより分散システムでありながらCA(とP)を実現しているように見える なので実際にネットワーク分断が起きるとAは満たせない
Spanner はワイド エリアで扱えるものでありながら、一貫性と高可用性を両立するとありますが、CAP の観点から見ると、多くの人が意外に、あるいは疑わしいとさえ思うでしょう。これは議論すべき題材です。はたして Spanner は CAP で定義されているような CA システムなのだろうかと。端的に答えると、技術的には違いますが、実際のところ CA システムだと考えて構いません。
違うというのは、ネットワークの分断が発生したときで、実際に Google で起こりました。分断が起きると Spanner は C を選択し、A を犠牲にします。つまり技術的に見ると、Spanner は CP システムなのです。
と言われるけどそもそも上記の議論から場合によるとしか
MySQLとか
つまりネットワーク分断が起こりえない
非同期レプリケーションの場合はどっちでもない